/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package GameData;

import GameLogic.*;
import java.awt.Color;

public final class Default  //default scenario 
{
    public static Scenario Scenario;
    
    static private MobType[] DefaultMobs;
    static private TowerType[] DefaultTowers;
    
    static
    {
        
        //Sample scenario creation
        Scenario = new Scenario();
        Scenario.MobCount = new int[50];
         for(int i = 0; i < 50; i++)
            Scenario.MobCount[i] = 20;
       
        //initialize towers data
        InitTowerLists();
        //initialize mob data
        InitMobLists();
        Scenario.MapFile = "default.bmp";
        Scenario.MobList = DefaultMobs;
        Scenario.TowerList = DefaultTowers;
        
        
        Scenario.Name = "Default";
        //Scenario.TileColor_Walkable = new Color(222, 192, 0);   //brown
        //Scenario.TileColor_Unwalkable = new Color(0, 200, 0);   //green
        Scenario.TileColor_Walkable = new Color(150, 0, 0);     //red
        Scenario.TileColor_Unwalkable = new Color(24, 24, 24);  //darkgray
        Scenario.StartLives = 25;
    }
    
    static void InitTowerLists()
    {
        DefaultTowers = new TowerType[50];
        Buff b;
        //sample tower creation
        //TODO: add methods setting values
        
        
        TowerType AT1 = new TowerType();
        AT1.Cooldown = 500;
        AT1.MinDamage = 5;
        AT1.MaxDamage = 15;
        AT1.Range = 6;
        AT1.dmgType = DamageType.Physical;
        AT1.missileColor = new Color(168, 101, 28);
        AT1.missileSpeed = 10;
        AT1.name = "Arrow Tower";
        AT1.price = 120;
        AT1.size = 2;
        AT1.color = new Color(206,180,140);
        AT1.desc = "Simple Arrow Tower";
        
                TowerType AT2 = new TowerType();
        
        AT2.Cooldown = 400;
        AT2.MinDamage = 10;
        AT2.MaxDamage = 30;
        AT2.Range = 8;
        AT2.dmgType = DamageType.Magical;
        AT2.missileColor = new Color(168, 101, 28);
        AT2.missileSpeed = 10;
        AT2.name = "Elf Tower";
        AT2.price = 120;
        AT2.size = 2;
        AT2.color = new Color(28,157,13);
        AT2.desc = "Mystic Elf Tower \n fights the army of evil";
     
        AT1.upgradesTo = AT2;
        
        TowerType AT3 = new TowerType();
        
        AT3.Cooldown = 600;
        AT3.MinDamage = 10;
        AT3.MaxDamage = 100;
        AT3.Range = 10;
        AT3.dmgType = DamageType.Physical;
        AT3.missileColor = new Color(242, 254, 18);
        AT3.missileSpeed = 20;
        AT3.name = "Assasins 1995";
        AT3.price = 300;
        AT3.size = 2;
        AT3.color = new Color(214,214,214);
        AT3.desc = "Miguel Bain: \n I've just killed your brother... ";
     
        AT2.upgradesTo = AT3;
         
       
        TowerType CP1 = new TowerType();
        CP1.Cooldown = 400;
        CP1.MinDamage = 20;
        CP1.MaxDamage = 35;
        CP1.Range = 8;
        CP1.dmgType = DamageType.Chaos;
        CP1.missileColor = new Color(20, 40, 30);
        CP1.missileSpeed = 10;
        CP1.name = "Chaotic Power";
        CP1.price = 350;
        CP1.size = 2;
        CP1.color = new Color(40,120,230);
        CP1.desc = "Mystical tower spreading \n fear among enemies";
        
        TowerType CP2 = new TowerType();
        CP2.Cooldown = 350;
        CP2.MinDamage = 30;
        CP2.MaxDamage = 50;
        CP2.Range = 8;
        CP2.dmgType = DamageType.Magical;
        CP2.missileColor = new Color(20, 40, 30);
        CP2.missileSpeed = 11;
        CP2.name = "Bone Droids";
        CP2.price = 200;
        CP2.size = 2;
        CP2.color = new Color(102,19,88);
        CP2.desc = "Ancient Droids using \n the power of dark rituals";
        
         b = new Buff("Life reduced by 10%", Buff.AURA, -0.1, 0, 0, false);
        CP2.mAura = new MobAura("Blood sacrifice",8, b);
        
        CP1.upgradesTo = CP2;
        
        TowerType CP3 = new TowerType();
        CP3.Cooldown = 250;
        CP3.MinDamage = 80;
        CP3.MaxDamage = 80;
        CP3.Range = 8;
        CP3.dmgType = DamageType.Chaos;
        CP3.missileColor = new Color(119, 5, 2);
        CP3.missileSpeed = 14;
        CP3.name = "The Butcher";
        CP3.price = 1500;
        CP3.size = 2;
        CP3.color = new Color(120,150,48);
        CP3.desc = "Strange noises are coming out \n from that butcher's shop...";
        
        b = new Buff("Life reduced by 30%, reduced movement speed 20%", Buff.AURA, -0.3, -0.20, 0, false);
        CP3.mAura = new MobAura("The Butcher takes what he wants",8, b);
        
        CP2.upgradesTo = CP3;
        
        
        TowerType MG1 = new TowerType();
        MG1.Cooldown = 200;
        MG1.MinDamage = 25;
        MG1.MaxDamage = 45;
        MG1.Range = 6;
        MG1.dmgType = DamageType.Physical;
        MG1.missileColor = new Color(20, 40, 30);
        MG1.missileSpeed = 15;
        MG1.name = "Heavy Machine gun";
        MG1.price = 500;
        MG1.size = 2;
        MG1.color = new Color(210, 190, 13);
        MG1.desc = "High attack speed machine gun \nshreding enemy bodies";
        
        TowerType MG2 = new TowerType();
        MG2.Cooldown = 100;
        MG2.MinDamage = 20;
        MG2.MaxDamage = 40;
        MG2.Range = 8;
        MG2.dmgType = DamageType.Physical;
        MG2.missileColor = new Color(20, 40, 30);
        MG2.missileSpeed = 15;
        MG2.name = "NAVY Seals";
        MG2.price = 500;
        MG2.size = 2;
        MG2.color = new Color(141, 210, 104);
        MG2.desc = "Let the marines handle this... ";
        
        
        b = new Buff("Reduced Armor", Buff.AURA, 0, 0, -5, false);
        MG2.mAura = new MobAura("Armor Reduce", 8, b);
        MG1.upgradesTo = MG2;
        
        TowerType MG3 = new TowerType();
        MG3.Cooldown = 50;
        MG3.MinDamage = 40;
        MG3.MaxDamage = 260;
        MG3.Range = 10;
        MG3.dmgType = DamageType.Physical;
        MG3.missileColor = new Color(20, 40, 30);
        MG3.missileSpeed = 15;
        MG3.name = "RAMBOOO";
        MG3.price = 2000;
        MG3.size = 2;
        MG3.color = new Color(60, 5, 4);
        MG3.desc = "They drew first blood, not me... ";
        
        
        b = new Buff("Ultra Reduced Armor", Buff.AURA, 0, 0, -10, false);
        MG3.mAura = new MobAura("Rambo's traps \n *Ultra reduced armor",8, b);
        MG2.upgradesTo = MG3;
        
        TowerType DB1 = new TowerType();
        DB1.Cooldown = 2500;
        DB1.MinDamage = 800;
        DB1.MaxDamage = 800;
        DB1.Range = 6;
        DB1.dmgType = DamageType.Magical;
        DB1.missileColor = new Color(255, 34, 34);
        DB1.missileSpeed = 13;
        DB1.name = "DOOM Bringer";
        DB1.price = 900;
        DB1.size = 3;
        DB1.color = new Color(55,12,69);
        DB1.requires.add(AT1);
        DB1.requires.add(MG1);
        DB1.requires.add(CP1);
        DB1.desc = "Very slow attack speed \n Demolishing power \n Requires Arrow Tower, Machine gun Tower \n and Chaotic power Tower";
        
        TowerType DB2 = new TowerType();
        DB2.Cooldown = 2500;
        DB2.MinDamage = 2000;
        DB2.MaxDamage = 2500;
        DB2.Range = 8;
        DB2.dmgType = DamageType.Magical;
        DB2.missileColor = new Color(255, 34, 34);
        DB2.missileSpeed = 13;
        DB2.name = "Satanic Wrath";
        DB2.price = 30000;
        DB2.size = 3;
        DB2.color = new Color(183,0,0);
        DB2.requires.add(AT2);
        DB2.requires.add(CP2);
        DB2.requires.add(MG2);        
        DB2.desc = "The Devil unleashes his power... \n TOTAL ANIALATION \n *requires Elf Tower, Bone Droids \n and NAVY Seals"; 
        
        
        b = new Buff("Decreased life by 50%", Buff.AURA, -0.5, 0, 0, false);
        DB2.mAura = new MobAura("DEVILS REVENGE",8, b);
        DB1.upgradesTo = DB2;
        
        TowerType DB3 = new TowerType();
        DB3.Cooldown = 800;
        DB3.MinDamage = 6000;
        DB3.MaxDamage = 6000;
        DB3.Range = 8;
        DB3.dmgType = DamageType.Magical;
        DB3.missileColor = new Color(255, 34, 34);
        DB3.missileSpeed = 13;
        DB3.name = "HOLOCAUST";
        DB3.price = 150000;
        DB3.size = 3;
        DB3.color = new Color(0,0,0);
        DB3.requires.add(AT2);
        DB3.requires.add(CP2);
        DB3.requires.add(MG2);        
        DB3.desc = "... \n requires Elf Tower, Bone Droids \n and NAVY Seals"; 
        
        
        b = new Buff("Decreased life by 70%", Buff.AURA, -0.7, 0, 0, false);
        DB3.mAura = new MobAura("Poison gasses",9, b);
        DB2.upgradesTo = DB3;
        
        TowerType TA1 = new TowerType();
        TA1.Cooldown = 350;
        TA1.MinDamage = 50;
        TA1.MaxDamage = 70;
        TA1.Range = 8;
        TA1.dmgType = DamageType.Physical;
        TA1.missileColor = new Color(255, 255, 128);
        TA1.missileSpeed = 10;
        TA1.name = "Taliban Army";
        TA1.price = 600;
        TA1.size = 2;
        TA1.color = new Color(253, 182, 96);
        TA1.desc = "Talibans straight from the mountains !";
        
        TowerType TA2 = new TowerType();
        TA2.Cooldown = 350;
        TA2.MinDamage = 80;
        TA2.MaxDamage = 100;
        TA2.Range = 8;
        TA2.dmgType = DamageType.Physical;
        TA2.missileColor = new Color(255, 255, 128);
        TA2.missileSpeed = 13;
        TA2.name = "Mudjihidins";
        TA2.price = 500;
        TA2.size = 2;
        TA2.color = new Color(253, 251, 168);
        TA2.desc = "Nomads killing mercelessly";
       
        TA1.upgradesTo = TA2;
        
         TowerType TA3 = new TowerType();
        TA3.Cooldown = 300;
        TA3.MinDamage = 120;
        TA3.MaxDamage = 160;
        TA3.Range = 10;
        TA3.dmgType = DamageType.Physical;
        TA3.missileColor = new Color(255, 255, 128);
        TA3.missileSpeed = 14;
        TA3.name = "Jihad Army";
        TA3.price = 1400;
        TA3.size = 2;
        TA3.color = new Color(253, 251, 168);
        TA3.desc = "Religious WAR";
        b = new Buff("Slowed by 20%", Buff.AURA, 0, -0.10, 0, false);
        TA2.mAura = new MobAura("Taliban Bomb Field",8, b);
        TA2.upgradesTo = TA3;
                
       DefaultTowers[0]= AT1;
       DefaultTowers[1]= CP1;
       DefaultTowers[2]= MG1;
       DefaultTowers[3]= DB1;
       DefaultTowers[4]= TA1;
    }
    
    static void InitMobLists()
    {
        DefaultMobs = new MobType[40];
        
        DefaultMobs[0] = new MobType("Ogre");
        DefaultMobs[0].setAttributes(100, 3, 5, ArmorType.Heavy, 20);
        DefaultMobs[0].color = new Color(150, 120, 75);
        Scenario.MobCount[0] = 20;
          
          
        DefaultMobs[1] = new MobType("Assassin");
        DefaultMobs[1].setAttributes(300, 5, 5, ArmorType.Light, 25);
        DefaultMobs[1].color = new Color(23, 35, 61);
          
        
        DefaultMobs[2] = new MobType("Shadow deamon");
        DefaultMobs[2].setAttributes(350, 8, 7, ArmorType.Medium, 30);
        DefaultMobs[2].color = new Color(22, 22, 22);
        Scenario.MobCount[2] =  40;
        
        DefaultMobs[3] = new MobType("Demon guardian");
        DefaultMobs[3].setAttributes(650, 3, 7, ArmorType.Heavy, 40);
        DefaultMobs[3].color = new Color(22, 22, 22);
        
        
        
        DefaultMobs[4] = new MobType("Beefy JO");
        DefaultMobs[4].setAttributes(1400, 3, 5, ArmorType.Light, 80);
        DefaultMobs[4].color = new Color(77, 143, 222);
        

        
        
        DefaultMobs[5] = new MobType("INIALATOR");
        DefaultMobs[5].setAttributes(3500, 2, 12, ArmorType.Medium, 150);
        DefaultMobs[5].color = new Color(230, 50, 80);
        Scenario.MobCount[5] = 9;
        
        DefaultMobs[6] = new MobType("EL DIABLO");
        DefaultMobs[6].setAttributes(45000, 1, 1, ArmorType.Heavy, 800);
        DefaultMobs[6].color = new Color(0, 0, 0);
        Scenario.MobCount[6] = 1;
        
        DefaultMobs[7] = new MobType("Chubaka");
        DefaultMobs[7].setAttributes(2000, 4, 4, ArmorType.Heavy, 300);
        DefaultMobs[7].color = new Color(254, 143, 7);
       
        
        DefaultMobs[8] = new MobType("R2 D2");
        DefaultMobs[8].setAttributes(2500, 3, 4, ArmorType.Medium, 350);
        DefaultMobs[8].color = new Color(84, 91, 177);
       
        
        DefaultMobs[9] = new MobType("Barberian");
        DefaultMobs[9].setAttributes(4000, 3, 8, ArmorType.Heavy, 400);
        DefaultMobs[9].color = new Color(234, 183, 28);
        Scenario.MobCount[9] = 15;
        
        DefaultMobs[10] = new MobType("Yeti");
        DefaultMobs[10].setAttributes(5500, 4, 8, ArmorType.Light, 400);
        DefaultMobs[10].color = new Color(55, 253, 253);
        Scenario.MobCount[10] = 15;
        
        DefaultMobs[11] = new MobType("Count Dracula");
        DefaultMobs[11].setAttributes(30000, 4, 8, ArmorType.Heavy, 1200);
        DefaultMobs[11].color = new Color(251, 0, 0);
        Scenario.MobCount[11] = 1;
        
        DefaultMobs[12] = new MobType("Sith");
        DefaultMobs[12].setAttributes(5000, 5, 10, ArmorType.Medium, 500);
        DefaultMobs[12].color = new Color(164, 87, 97);
        Scenario.MobCount[12] = 10;
        
        DefaultMobs[13] = new MobType("Wookie");
        DefaultMobs[13].setAttributes(4000, 5, 10, ArmorType.Light, 500);
        DefaultMobs[13].color = new Color(131, 131, 120);
        Scenario.MobCount[13] = 20;
        
        DefaultMobs[14] = new MobType("MANGALI");
        DefaultMobs[14].setAttributes(4500, 5, 5, ArmorType.None, 550);
        DefaultMobs[14].color = new Color(40, 40, 40);
        Scenario.MobCount[14] = 20;
        
        DefaultMobs[15] = new MobType("SIGANI, BRAT");
        DefaultMobs[15].setAttributes(5000, 7, 4, ArmorType.Light, 550);
        DefaultMobs[15].color = new Color(0, 0, 0);
        Scenario.MobCount[15] = 40;
        
        
        DefaultMobs[16] = new MobType("TZAR KIRO");
        DefaultMobs[16].setAttributes(60000, 3, 4, ArmorType.Heavy, 2000);
        DefaultMobs[16].color = new Color(60, 80, 70);
        Scenario.MobCount[16] = 1;
        
        
        DefaultMobs[17] = new MobType("NecroMongo");
        DefaultMobs[17].setAttributes(6500, 4, 8, ArmorType.Light, 600);
        DefaultMobs[17].color = new Color(11, 1, 80);
   
        Scenario.MobCount[17] = 13;
        
        
        DefaultMobs[18] = new MobType("Cannibal Evasion");
        DefaultMobs[18].setAttributes(7000, 6, 5, ArmorType.Medium, 700);
        DefaultMobs[18].color = new Color(71, 45, 10);
        
        
        DefaultMobs[19] = new MobType("Anarki");
        DefaultMobs[19].setAttributes(5000, 9, 4, ArmorType.Heavy, 800);
        DefaultMobs[19].color = new Color(255, 17, 113);
        
         Scenario.MobCount[19] = 40;
        
        
        DefaultMobs[20] = new MobType("YODA");
        DefaultMobs[20].setAttributes(100000, 1, 6, ArmorType.Heavy, 8000);
        DefaultMobs[20].color = new Color(88, 225, 109);
        Scenario.MobCount[20] = 1;
        
        DefaultMobs[21] = new MobType("Blood Seeker");
        DefaultMobs[21].setAttributes(7000, 7, 8, ArmorType.Medium, 1200);
        DefaultMobs[21].color = new Color(251, 0, 0);
        Scenario.MobCount[21] = 1;
        
        DefaultMobs[22] = new MobType("KUNG-FU panda");
        DefaultMobs[22].setAttributes(10000, 5, 10, ArmorType.Medium, 500);
        DefaultMobs[22].color = new Color(255, 255, 255);
        Scenario.MobCount[22] = 10;
        
        DefaultMobs[23] = new MobType("Teemo");
        DefaultMobs[23].setAttributes(5000, 10, 5, ArmorType.Light, 500);
        DefaultMobs[23].color = new Color(131, 131, 120);
        Scenario.MobCount[23] = 30;
        
        DefaultMobs[24] = new MobType("King-Kong");
        DefaultMobs[24].setAttributes(8000, 7, 5, ArmorType.None, 550);
        DefaultMobs[24].color = new Color(46, 33, 7);
        Scenario.MobCount[24] = 20;
        
        DefaultMobs[25] = new MobType("Rhyno");
        DefaultMobs[25].setAttributes(15000, 8, 4, ArmorType.Light, 1000);
        DefaultMobs[25].color = new Color(0, 0, 0);
        Scenario.MobCount[25] = 5;
        
        
        DefaultMobs[26] = new MobType("Westley Snipes");
        DefaultMobs[26].setAttributes(200000, 3, 4, ArmorType.Heavy, 2000);
        DefaultMobs[26].color = new Color(0, 0, 0);
        Scenario.MobCount[26] = 1;
        
        
        DefaultMobs[27] = new MobType("Night Wiches");
        DefaultMobs[27].setAttributes(9000, 4, 8, ArmorType.Light, 700);
        DefaultMobs[27].color = new Color(51, 0, 53);
   
        Scenario.MobCount[27] = 12;
        
        
        DefaultMobs[28] = new MobType("Waspinator");
        DefaultMobs[28].setAttributes(7000, 6, 5, ArmorType.Medium, 700);
        DefaultMobs[28].color = new Color(252, 252, 10);
        
        
        DefaultMobs[29] = new MobType("VOLTRON");
        DefaultMobs[29].setAttributes(500000, 1, 4, ArmorType.Heavy, 18000);
        DefaultMobs[29].color = new Color(184, 27, 31);
       
         Scenario.MobCount[29] = 1;
        
        
        DefaultMobs[30] = new MobType("Chuck Norris");
        DefaultMobs[30].setAttributes(200000000, 1, 50, ArmorType.Heavy, 800000);
        DefaultMobs[30].color = new Color(88, 225, 109);
        Scenario.MobCount[30] = 1;
        
   
    }
}
